﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Xiaowei.Services
{
    public static class ServiceFactory
    {
        private static readonly Lazy<IOpenAppService> lazyOpenAppService = new Lazy<IOpenAppService>(() => new OpenAppService(), true);
        public static IOpenAppService OpenAppService => lazyOpenAppService.Value;
        private static readonly Lazy<IBrightnessService> lazyBrightnessService = new Lazy<IBrightnessService>(() => new BrightnessService(), true);
        public static IBrightnessService BrightnessService => lazyBrightnessService.Value;
        private static readonly Lazy<IQQMusicService> lazyQQMusicService = new Lazy<IQQMusicService>(() => new QQMusicService(), true);
        public static IQQMusicService QQMusicService => lazyQQMusicService.Value;
        private static readonly Lazy<ITencentVideoService> lazyTencentVideoService = new Lazy<ITencentVideoService>(() => new TencentVideoService(), true);
        public static ITencentVideoService TencentVideoService => lazyTencentVideoService.Value;

        private static readonly Lazy<IDeviceInfoService> lazyDeviceInfoService = new Lazy<IDeviceInfoService>(() => new DeviceInfoService(), true);
        public static IDeviceInfoService DeviceInfoService => lazyDeviceInfoService.Value;

        private static readonly Lazy<IPCControlService> lazyPCControlService = new Lazy<IPCControlService>(() => new PCControlService(), true);
        public static IPCControlService PCControlService => lazyPCControlService.Value;

        private static readonly Lazy<INativeMessageService> lazyNativeMessageService = new Lazy<INativeMessageService>(() => new NativeMessageService(), true);
        public static INativeMessageService NativeMessageService => lazyNativeMessageService.Value;

        private static readonly Lazy<ITTSPlayService> lazyTTSPlayService = new Lazy<ITTSPlayService>(() => new TTSPlayService(), true);
        public static ITTSPlayService TTSPlayService => lazyTTSPlayService.Value;
    }
}
